Recent Technotes
Note:
For archived 1999 Updates, check out: What's New 1999.
May 2000
New
- TN1197: QuickTime 4.1.1/4.1.2
QuickTime 4.1.1/4.1.2 can be described as a minimal-changes releases that provide a number of miscellaneous bug fixes.
This Technote describes the changes made between the release of QuickTime 4.1 and the update releases of QuickTime 4.1.1 and 4.1.2.
Updated
April 2000
New
- TN1196: Cursor Components
This Technote describes the building and use of cursor components. Cursor components allow you to build custom color cursors completely under your control. Unlike previous color cursors on the Macintosh, these components allow much more flexibility.
Cursors created utilizing this component are pretty unlimited. They could be extra large, thousands or millions of colors, transparent, situationally intelligent, and/or animated.
This Note is directed at developers who want to utilize this component of Mac OS 9.
- TN1195: Tagging Handle Data References in QuickTime 4
This Technote discusses the use of data reference extensions, which are used by QuickTime 4 to tag handle data references. Data reference extensions give you the ability to associate MacOS file type, MIME type, initialization data and/or file name information with a given file.
This Note is directed at developers who want to take advantage of this new feature in QuickTime 4.
- TN1194: Mac OS Update 9.0.4
This Technote describes bug fixes and enhancements present in Mac OS 9.0.4.
Mac OS 9.0.4 provides support for new Apple hardware
platforms released since Mac OS 9. As such, during development some interim versions of the software were released on some
hardware platforms. Where relevant, the particular release
where a feature was introduced is mentioned. Version numbers
for these releases include Mac OS 9.0.2, Mac OS 9.0.3, and Mac OS 9.0.4. Mac OS 9.0.4 includes all of the features and enhancements that were present in Mac OS 9.0.2 and Mac OS 9.0.3. There was no public release of Mac OS 9.0.1.
All developers interested in creating products compatible
with Mac OS and being aware of issues relevant to creating products
for use with the Mac OS will want to review this document.
Updated
- TN1176: Mac OS 9
This Technote discusses changes and corrections in the next generation of
Mac OS: Mac OS 9. This system follows Mac OS 8.6
and contains several enhancements and revised features. All developers interested in creating products compatible
with Mac OS 9 will want to review this document.
- TN1104: Interrupt-Safe Routines
The traditional
Mac OS has a badly defined set of heterogeneous programming
environments. In some of these environments, your code can
access some system services but not others. Furthermore, the
names given to these environments are often overloaded and
confusing. This results in a lot of programmer confusion.
This Technote attempts to clear up this confusion by
assigning each of the execution levels a unique name,
describing how and why your code might find itself running
at a particular execution level, and outlining the
restrictions your code might face when running at that
level.
This Technote is important for anyone programming any Mac
OS code that might run at "interrupt time," and vital for
anyone doing system-level programming under the traditional
Mac OS.
- TN1187: Digital CD Audio
Starting with Mac OS 9.0 there is a new way of playing CD audio -- digitally. Pure digital data is read from the CD, played
through the Sound Manager as a PCM (Pulse Code Modulation -- standard uncompressed audio) data stream, and then sent out to the speakers (where your ears require that it be converted back to an analog signal).
This Technote describes how an application uses the
new digital CD audio support and what a CD or DVD driver
needs to do to support playing audio digitally.
March 2000
Updated
- TN1176: Mac OS 9
This Technote discusses changes and corrections in the next generation of
Mac OS: Mac OS 9. This system follows Mac OS 8.6
and contains several enhancements and revised features. All developers interested in creating products compatible
with Mac OS 9 will want to review this document.
- TN1154: Debugging Java Code With MacsBug
MacsBug, the low-level debugger for the Mac OS, seems unlikely to be useful for debugging a very high-level language like Java. Au contraire! The MRJ plug-in 'dcmd' for MacsBug adds a number of commands that can help you debug everything from deadlocks to memory leaks. This Technote introduces MacsBug for those not familiar with it, and shows how to use the MRJ commands to debug your Java code.
- TN1071: Working with Multiprocessing Services
This Technote describes the basic steps required to use the Apple
Multiprocessing API and attempts to clarify the things that can and
cannot be done from tasks created using that API. It is directed
primarily at developers working with, or preparing to work with the
Multiprocessing API. Although the examples given are aimed at
application writers, it contains information useful for system level
engineers also.
February 2000
New
- TN1193: How to structure your handleCheckUpdate callback
A JManager host application should call JMFrameUpdate from its window-drawing code, and should also implement a checkUpdate callback that will call JMFrameUpdate if the window's update region is non-empty. (CheckUpdate is called by the AWT to fix up the display immediately if part of the window may have been invalidated by some AWT action.)
This results in AWT being called while the window is in a funny state -- the BeginUpdate call has clipped its visRgn down to just the area needing updating, so any drawing calls can only draw in that area.
The problem comes in if another thread gets control before the JManager call completes. This might be any other thread, and it may perform other AWT operations like graphics-based drawing, moving components, or updating controls. Since whatever it draws will be clipped down to the window's updateRgn, some parts of the window may not be updated, which looks ugly. This Technote addresses how to fix this problem.
Updated
- TN1168: The Care And Feeding of Runtime.exec
Runtime.exec( ) is probably the single least
cross-platform-compatible part of the Java API set. It assumes the existence of a command-line interface to the OS and the ability to launch arbitrary apps that can accept arbitrary parameters. Nevertheless, there are times when you need to use it -- for instance, to open a URL in a Web browser or to spawn a new Java process. This technote describes MRJ 2.x's implementation of Runtime.exec, and how it differs from that of the JDK.
- TN1162: Introduction to MRJ Scripting with AppleScript for Java
With the release of MRJ 2.1, AppleScript support in Java applets and applications is now a reality. This Technote covers the technical information you will need to take full advantage of AppleScript in your Java application.
Apple Applet Runner and the MRJShellLib (inside of MRJLib) support the Macintosh Open Scripting Architecture. As a result, the Apple
Applet Runner, the applets it runs, and applications created with JBindery can be scripted by AppleScript or any other OSA scripting language. The only additional work required (for scripting of java-based applications) is the inclusion of the scripting resources 'aete ' and 'scsz '. No other specific scripting support is required from the Java applet or application. This enables MRJ users to download Java applets or applications from the Internet and use them as scriptable components on the Macintosh.
This document provides a brief overview of MRJ Scripting. It assumes that you are familiar with AppleScript and the OSA Architecture. As more information about MRJ Scripting becomes available, it will be posted on the MRJ Developer Page.
January 2000
Updated
- TN1181: Sherlock's Find by Content Text Extractor Plug-ins
This Technote
describes the API for creating Find By Content Text
Extractor Plug-ins. Text Extractor Plug-ins are used by
Find by Content to extract the textual information stored in
a document when it is creating indexes and summarizing files.
By doing so, it is possible for users to avoid indexing peripheral data such as
formatting commands, HTML tags, and other data that does not
relate to the information
stored in the document. By creating Text Extractor Plug-ins
for their document types, developers make it possible for
users to conduct meaningful searches for information stored
in documents created by their applications.
Text Extractor Plug-ins can be created for use with
Mac OS 8.6 and later. Mac OS 8.6 was
shipped with two Text Extractor Plug-ins: the "HTML
Text Extractor" and the "PDF Text Extractor." The "HTML
Text Extractor" strips the HTML tags from HTML files and
returns the text stored therein; the "PDF Text
Extractor" returns the textual information from Adobe®’s
Portable Document Format (PDF) files. In Mac OS 8.5, indexing
HTML files meant that both the text stored in the document
and the HTML tags were incorporated into indexes. Furthermore,
PDF files
were excluded from the indexing process. In Mac OS 8.6, meaningful
textual information extracted from these files is incorporated
into index files used by Find By Content.
This Technote provides information necessary for creating
and installing Text Extractor Plug-ins. In addition, an annotated
example Text Extractor Plug-in is provided. Developers
can easily modify this example to create their own
plug-in for use with their own file formats.
- TN1150: HFS Plus Volume Format
This Technote
describes the on-disk format for an HFS Plus volume. It does
not describe any programming interfaces for HFS Plus
volumes.
This technote is directed at developers who need to work
with HFS Plus at a very low level, below the abstraction
provided by the File Manager programming interface. This
includes developers of disk recovery utilities and
programmers implementing HFS Plus support on other
platforms.
This technote assumes that you have a conceptual
understanding of the HFS volume format, as described in Inside
Macintosh: Files.
- TN1145: Living in a Dynamic TCP Environment
This Technote
describes some of the intricacies of dealing with TCP/IP in
a dynamic environment, such as that provided by Open
Transport. Specifically, it describes how to write Open
Transport code which correctly handles multiple IP
addresses, dial-up links, sleep and wakeup on PowerBooks,
modem disconnection, and user reconfiguration.
This Note is directed at all developers using Open
Transport TCP/IP services.
- TN1104: Interrupt-Safe Routines
The traditional
Mac OS has a badly defined set of heterogeneous programming
environments. In some of these environments, your code can
access some system services but not others. Furthermore, the
names given to these environments are often overloaded and
confusing. This results in a lot of programmer confusion.
This Technote attempts to clear up this confusion by
assigning each of the execution levels a unique name,
describing how and why your code might find itself running
at a particular execution level, and outlining the
restrictions your code might face when running at that
level.
This Technote is important for anyone programming any Mac
OS code that might run at "interrupt time," and vital for
anyone doing system-level programming under the traditional
Mac OS.
- TN1060: Controlling Apps with Synthesized Events,
or jGNEFilter - the Untold Story
Until now, jGNEFilter has been "under documented," with only vague mentions appearing in Technote TB 11: GetNextEvent; Blinking Apple Menu. jGNEFilter is the name of a mechanism by which programs can obtain access to each EventRecord just before the event is sent to the caller of GetNextEvent or WaitNextEvent.
Using jGNEFilter, your programs can customize most event-driven interaction with the user, including but not limited to such things as monitoring keystrokes, and programmatically simulating some kinds of user activity. Also, without being an application or driver, your program can arrange to be called periodically at a time when it's safe to call Memory Manager (and the high-level managers which depend on Memory Manager).
Developers who would like to make use of jGNEFilter - or developers who are already bravely making use of it even in the face of inadequate documentation - should read this Technote.
Technotes
|